<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>todolist</title>
    <script src="vue.js"></script>
</head>
<body>
    <div id='app'>
			
        <input type="text" v-model = 'inputValue'>
        <button v-on:click = "handleBtnClick">提交</button>
        <ul>
            <li v-for='item in list'>{{item}}</li>
        </ul>
        <ul>
          <!-- v-bind 将父组件中的item绑定到子组件todoItem的content中。 -->
          <!-- @delete 父组件监听子组件的delete事件，一旦监听到，就调用handleItemDelete方法 -->
          <!-- 引号后不能添加空格 -->
           <todo-item v-bind:content = "item" 
            v-bind:index = "index"
            v-for = '(item,index) in list'
            @delete = "handleItemDelete"
           >
        </todo-item>
        </ul>
    </div>
    <script>
        
        // 全局组件声明,全局组件可以直接在视图层使用
        // Vue.component('TodoItem',{
        //     props:['content'],//从父组件中获取一个值
        //     template:'<li>{{content}}</li>'//{{content}}显示的是props中的属性值
        // })


        // 局部组件声明,需要在app对象中进行注册
          // 直接绑定到视图，控制台报错：
          // vue.js:616 [Vue warn]: Unknown custom element: <todo-item> - did you register the component correctly? For recursive components, make sure to provide the "name" option.
        var TodoItem = {
            // v-bind的值都可以写入props里
            props:['content', 'index'],
            template:'<li @click = "handleItemClick">{{content}}</li>',
            methods: {
                handleItemClick: function(){
                   // 子组件向父组件发送一个事件
                   this.$emit("delete",this.index);
                }
            }
        }
      
        var app = new Vue({
            el:"#app",
            // 注册局部组件
            components:{
                TodoItem: TodoItem
            },
            data:{
                list:['第一课','第二课'],
                inputValue:''
            },
            methods:{
                handleBtnClick:function(){
                   
                    this.list.push(this.inputValue);
                },
                handleItemDelete: function(index){
                    // 删掉序号为index的那一个值
                    this.list.splice(index,1);
                }
            }
        })
				
				// console.log(app.list);
				console.log(app);
				console.log(Vue);
				
    </script>
</body>
</html>